home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 4 / FM Towns Free Software Collection 4 - Disc 1.iso / pao / towns / paolib / sample / kybtest.c < prev    next >
Text File  |  1991-10-18  |  4KB  |  144 lines

  1. /** << High C >> **************************************************************
  2. **
  3. **    TEST プログラム( KYB_read , 画面出力 )
  4. **
  5. **    < HISTORY >
  6. **    1991.03.06 : CREATE
  7. **
  8. **    < note > : TABS = 4
  9. **
  10. **    Programmed by Y.Hirata ( Nifty ID : NAB03321 )
  11. **
  12. ******************************************************************************/
  13.  
  14. pragma    Off (Floating_point) ;
  15.  
  16. #include <stdio.h>
  17. #include <dos.h>
  18. #include <msdos.cf>
  19. #include <egb.h>
  20. #include <stdlib.h>
  21. #include <string.h>
  22. #include <fmc.h>
  23. #include "hc.h"
  24. #include "key.h"
  25.  
  26. #define    DEBUG        FALSE
  27.  
  28. #define    GworkSize    1536                /* グラフィック作業域のサイズ    */
  29. char    Gwork[GworkSize] ;                /* グラフィック作業域            */
  30.  
  31. /*  漢字の第1バイトかのチェック */
  32. #define iskanji(c)  ((0x81 <= c && c <= 0x9F) || (0xE0 <= c && c <= 0xFC))
  33.  
  34. /*********************************  初期化  **********************************/
  35. void ginit()
  36. {
  37.     TEXT_init( Gwork,GworkSize ) ;        /* EGB 初期化                        */
  38.     GRP_viewport( 0,0,1023,511 ) ;        /* View Port SET                    */
  39.     TEXT_cursor( TRUE ) ;                /* カーソル表示                            */
  40. }
  41.  
  42. /*****************************  ★ メイン ★  ********************************/
  43. void main()
  44. {
  45.     struct _ENCODE    encode ;
  46.     union _MOJI    moji ;
  47.     char    kanji ;
  48.     char    buf[3] ;
  49.  
  50.     ginit() ;                                /* EGB 初期化                */
  51.  
  52.     KYB_clrbuf() ;                            /*  バッファクリア            */
  53.     TEXT_color( C_HGREEN ) ;
  54.     TEXT_printf( "何かキーを押して下さい。 " ) ;
  55.     TEXT_color( C_HRED ) ;
  56.     TEXT_printf( "ESCキー" ) ;
  57.     TEXT_color( C_HGREEN ) ;
  58.     TEXT_printf( " で終了します。\n" ) ;
  59.     kanji = 0 ;
  60.     TEXT_color( C_HWHITE ) ;
  61.     TEXT_backcolor( C_BLUE ) ;
  62.     do {
  63.         moji.x = KYB_read( 0,(unsigned int *)&encode ) ;
  64.         if ( !kanji ) {
  65.             if ( iskanji(moji.hl.l) ) {            /*  漢字が入力された?    */
  66.                 kanji ++ ;
  67.             }
  68.         }
  69. #if DEBUG
  70.         TEXT_color( C_HYELLOW ) ;
  71.         TEXT_printf( "\n----------- KYB_read() test -----------\n" ) ;
  72.         TEXT_color( C_HGREEN ) ;
  73.         TEXT_printf( "moji   :\n" ) ;
  74.         TEXT_color( C_GREEN ) ;
  75.         TEXT_printf( "inform = %02xH (High)\n",moji.hl.h ) ;
  76.         TEXT_printf( "code   = " ) ;
  77.         TEXT_color( C_WHITE ) ;
  78.         TEXT_printf( "%c",moji.hl.l ) ;
  79.         TEXT_color( C_GREEN ) ;
  80.         TEXT_printf( "(%02xH) (Low)\n",moji.hl.l ) ;
  81.  
  82.         TEXT_color( C_HGREEN ) ;
  83.         TEXT_printf( "encode :\n" ) ;
  84.         TEXT_color( C_GREEN ) ;
  85.         TEXT_printf( "keyadr = %02xH (High)\n",encode.keyadr ) ;
  86.         TEXT_printf( "shift  = %02xH (Low )\n",encode.shift ) ;
  87.         TEXT_color( C_HWHITE ) ;
  88. #endif
  89.         if ( encode.keyadr == 0x01 ) break ;        /*  終了            */
  90.         if ( kanji == 1 ) {
  91.             buf[0] = moji.hl.l ;
  92.             kanji ++ ;
  93.         } else if ( kanji == 2 ) {
  94.             buf[1] = moji.hl.l ;
  95.             buf[2] = '\0' ;
  96.             kanji = 0 ;
  97.             TEXT_printf( "%s",buf ) ;
  98.         } else {
  99.             if ( (encode.shift & 0x04) == 0x04 ) {    /*  SHIFT KEY ON    */
  100.                 if ( moji.hl.l == KCODE_UP ) {
  101.                     TEXT_revscroll( NULL ) ;
  102.                 } else if ( moji.hl.l == KCODE_DOWN ) {
  103.                     TEXT_scroll( NULL ) ;
  104.                 } else {
  105.                     if ( moji.hl.l == 0x0F ) {        /*  CTRL+O            */
  106.                         if ( TEXTcrflg ) TEXTcrflg = FALSE ;
  107.                         else TEXTcrflg = TRUE ;
  108.                     }
  109.                     if ( moji.hl.l == KCODE_CR )
  110.                         TEXT_printf( "\n" ) ;
  111.                     else
  112.                         TEXT_printf( "%c",moji.hl.l ) ;
  113.                 }
  114.             } else {
  115.                 if ( moji.hl.l == 0x0F ) {            /*  CTRL+O            */
  116.                     if ( TEXTcrflg ) TEXTcrflg = FALSE ;
  117.                     else TEXTcrflg = TRUE ;
  118.                 }
  119.                 if ( moji.hl.l == KCODE_CR )
  120.                     TEXT_printf( "\n" ) ;
  121.                 else
  122.                     TEXT_printf( "%c",moji.hl.l ) ;
  123.             }
  124.         }
  125.     } while ( encode.keyadr != 0x01 ) ;
  126.     TEXT_color( C_HGREEN ) ;
  127.     TEXT_printf( "\nプログラムを終了します。\n" ) ;
  128.     TEXT_color( C_HRED ) ;
  129.     TEXT_printf( "Program END!!!\n" ) ;
  130.  
  131.     KYB_clrbuf() ;                            /*  バッファクリア            */
  132.     TEXT_color( C_HGREEN ) ;
  133.     TEXT_printf( "何かキーを押して下さい。 " ) ;
  134.     moji.x = KYB_read( 0,(unsigned int *)&encode ) ;
  135.  
  136. /*
  137. **    コンソール画面に戻す
  138. */
  139.     EGB_init( Gwork,GworkSize ) ;    /*  ゴミを消すため EGB 初期化        */
  140.     EGB_clearScreen( Gwork ) ;
  141.     coninit() ;
  142. }
  143.  
  144.